OpenStreetMapをAndroidアプリで表示する サンプルコード
前段階として、
OpenStreetMapをAndroidアプリに組み込む
でライブラリとしてosmdroidの準備ができていることが前提です。
さて、ここではさくっとOpenStreetMapを表示しましょう。
GoogleMapと利用方法はほぼ同じです。
- MainActivity
package com.example.osmsample;
import org.osmdroid.api.IMapController;
import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IMapController m_mapController;
MapView map = new org.osmdroid.views.MapView(this, 256);
map.setBuiltInZoomControls(true);
map.setTileSource(TileSourceFactory.MAPNIK);
map.setMultiTouchControls(true);
org.osmdroid.views.MapView.LayoutParams mapParams = new org.osmdroid.views.MapView.LayoutParams(
org.osmdroid.views.MapView.LayoutParams.MATCH_PARENT,
org.osmdroid.views.MapView.LayoutParams.MATCH_PARENT, null,
0, 0, org.osmdroid.views.MapView.LayoutParams.BOTTOM_CENTER);
LinearLayout map_layout = (LinearLayout) findViewById(R.id.mapview);
map_layout.addView(map, mapParams);
m_mapController = map.getController();
m_mapController.setZoom(15);
double tempo_center_lat = 35.45797; //横浜みなとみらいの緯度
double tempo_center_lng = 139.632314; //横浜みなとみらいの経度
GeoPoint center_gpt = new GeoPoint(tempo_center_lat, tempo_center_lng);
m_mapController.setCenter(center_gpt);
}
}
- activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> </LinearLayout> </LinearLayout>
